perm filename UDPDMP.FAI[KID,KMC] blob sn#122897 filedate 1974-11-15 generic text, type T, neo UTF8
TITLE UDPDMP
;THIS PROGRAM TRANSFERS THE CONTENTS OF ANY DESIGNATED UDP BLOCK
;TO THE DISK-FILE  `UDPDMP.TMP'
;THE BLOCK NUMBER REQUIRED IS ENTERED DIRECTLY INTO THE PROGRAM.

DMPFIL:	SIXBIT	/UDPDMP/
	SIXBIT	/TMP/
	0
	0

DIOWD:	IOWD	4600,BUFFER
	0
UDPIOW:	IOWD	=2336,BUFFER
BLKNO:	0			;OVERWRITTEN.
BUFFER:	BLOCK	4600

A←1
B←2
C←3
D←4
DSKCHN←←15
UDPCHN←←14

START:	INIT	UDPCHN,17	;INIT UDP IN DUMP MODE
	SIXBIT	/UDP/
	0
	JRST	[OUTSTR [ASCIZ /I DIE/]
		CALL [SIXBIT /EXIT/]]

	INIT	DSKCHN,17	;INIT DSK IN DUMP MODE
	SIXBIT	/DSK/
	0
	JRST	[OUTSTR [ASCIZ /MY WORLD IS CRUMBLING/]
		CALL [SIXBIT /EXIT/]]

	ENTER	DSKCHN,DMPFIL	;CREATE A FILE
	JRST	[OUTSTR [ASCIZ /I NEED TO BE RAIDED/]
		CALL [SIXBIT /EXIT/]]

	SETZM	BUFFER		;THESE ORDERS CLEAR BUFFER
	MOVEI	0,BUFFER+1
	HRLI	0,BUFFER
	BLT	0,BUFFER+4600

	OUTSTR	[ASCIZ /TYPE A BLOCK NUMBER IN OCTAL /]

	MOVEI	A,0
LOOP:	INCHWL	B		;GET NEXT CHARACTER
	ANDI	B,177
	CAIN	B,040
	JRST	LOOP		;IGNORE SPACES.
	CAIN	B,012
	JRST	LOOP		;IGNORE LINE FEEDS
	CAIN	B,15
	JRST	ZOOP		;CARRIAGE RETURN DETECTED
	CAIGE	B,060
	JRST	HOOP		;NON DIGIT
	CAILE	B,067
	JRST	HOOP		;NON OCTAL DIGIT

DIGIT:	LSH	A,3
	SUBI	B,060
	OR	A,B
	JRST	LOOP		;LOOK FOR MORE

HOOP:	OUTSTR	[ASCIZ /
NON OCTAL DIGIT - TRY AGAIN./]
HOOPLA:	INCHWL	B		;GET NEXT LOOK FOR CR
	ANDI	B,177
	CAIE	B,015
	JRST	HOOPLA		;AWAIT CR
	MOVEI	A,0
	JRST	LOOP

ZOOP:	MOVEM	A,BLKNO		;THIS IS THE BLOCK NO.
	CAIL	A,=4000
	JRST	[OUTSTR [ASCIZ /BLOCK NUMBER TOO LARGE -TRY AGAIN/]
		MOVEI	A,0
		JRST LOOP]
	INPUT	UDPCHN,UDPIOW

	OUTPUT	DSKCHN,DIOWD
	CLOSE	DSKCHN,0

	RELEAS	UDPCHN,
	RELEAS	DSKCHN,

	CALL	[SIXBIT /EXIT/]

END START